package com.xlh.openai.controller;


import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xlh.openai.common.Result;
import com.xlh.openai.entity.TopicsEntity;
import com.xlh.openai.entity.TopicsVO;
import com.xlh.openai.service.TopicsService;
import com.xlh.openai.utils.BeanUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import jdk.nashorn.internal.objects.annotations.Getter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
 * 
 *
 * @author 1280251739@qq.com
 * @email sunlightcs@gmail.com
 * @date 2023-05-24 09:59:53
 */
@RestController
@RequestMapping("/topics")
@Api(tags = "话题列表 ❗ TODO")
public class TopicsController {

    @Autowired
    private TopicsService topicsService;
    /**
     * 列表
     */
    @ApiOperation("列表 ❗ TODO 20230529 新增参数 roleId ")
    @GetMapping("/list")
    public Result list( @RequestParam(name = "roleId", required = false) Integer roleId ){

        List<TopicsEntity> list;
        if(ObjectUtil.isNotNull(roleId)){
            list = topicsService.listByRoleId(roleId);
        }else{
            list = topicsService.list();
        }
        List<TopicsVO> result = BeanUtil.batchTransform(TopicsVO.class, list);
        return Result.success(result);
    }

    /**
     * 保存
     */
    // @ApiOperation("保存")
    // @PostMapping("/save")
    public void save(){

        String txt = "[{\n" +
                "            \"id\": 3,\n" +
                "            \"topicTitle\": \"万能\",\n" +
                "            \"topicDescription\": \"这是ChatGPT，是由OpenAI训练的大型语言模型。请尽可能简洁地回答问题。\\n知识截止日期：2021年9月1日\",\n" +
                "            \"topicResponse\": \"请输入你的问题：\",\n" +
                "            \"sortNum\": 1,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": \"2023-04-16 12:37:44\",\n" +
                "            \"updatedAt\": \"2023-04-16 12:37:44\"\n" +
                "        }, {\n" +
                "            \"id\": 4,\n" +
                "            \"topicTitle\": \"写论文\",\n" +
                "            \"topicDescription\": \"我会给你一个主题，你帮我收集主题相关的资料，帮我写一篇论文\",\n" +
                "            \"topicResponse\": \"请在下方的聊天框输入你要写的论文的主题：\",\n" +
                "            \"sortNum\": 2,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": \"2023-04-16 12:37:44\",\n" +
                "            \"updatedAt\": \"2023-04-16 12:37:44\"\n" +
                "        }, {\n" +
                "            \"id\": 5,\n" +
                "            \"topicTitle\": \"翻译助手\",\n" +
                "            \"topicDescription\": \"我会给你一段文字，帮我准确的翻译成英文\",\n" +
                "            \"topicResponse\": \"请在下方的聊天框输入您要翻译的内容：\",\n" +
                "            \"sortNum\": 3,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": \"2023-04-16 12:37:44\",\n" +
                "            \"updatedAt\": \"2023-04-16 12:37:44\"\n" +
                "        }, {\n" +
                "            \"id\": 6,\n" +
                "            \"topicTitle\": \"PPT大纲\",\n" +
                "            \"topicDescription\": \"你是一个PPT写作小能手，我给你一个主题，你来帮我列一下大纲\",\n" +
                "            \"topicResponse\": \"请在下方的聊天框输入您的主题：\",\n" +
                "            \"sortNum\": 4,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": \"2023-04-16 12:37:44\",\n" +
                "            \"updatedAt\": \"2023-04-16 12:37:44\"\n" +
                "        }, {\n" +
                "            \"id\": 7,\n" +
                "            \"topicTitle\": \"律师\",\n" +
                "            \"topicDescription\": \"律师是一种法律专业人士，他们代表客户处理法律事务，包括提供法律建议、起草法律文件、代表客户出庭等。律师需要通过法律考试获得执业资格，并遵守法律职业道德规范，接下来你要扮演律师。\",\n" +
                "            \"topicResponse\": \"我是律师，请问你要哪方面的法律咨询：\",\n" +
                "            \"sortNum\": 5,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": \"2023-04-16 12:37:44\",\n" +
                "            \"updatedAt\": \"2023-04-16 12:37:44\"\n" +
                "        }, {\n" +
                "            \"id\": 8,\n" +
                "            \"topicTitle\": \"写简历\",\n" +
                "            \"topicDescription\": \"简历撰写的一般步骤如下：选择合适的简历格式和模板；在简历中突出自己的优势和特长，包括教育背景、工作经历、技能和成就等；使用简洁明了的语言，避免使用过于复杂的词汇和长句子；突出重点信息，如关键词和数字，以便让招聘者更容易地了解你的能力和经验；仔细检查和校对简历，确保没有拼写或语法错误，并保持格式整洁和一致，我给你名字和职业，你来帮我写一份简历\",\n" +
                "            \"topicResponse\": \"请告诉我你的名字和职业我来帮你写简历：\",\n" +
                "            \"sortNum\": 6,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 9,\n" +
                "            \"topicTitle\": \"广告文案\",\n" +
                "            \"topicDescription\": \"广告文案是用来宣传产品或服务的文字内容，旨在吸引潜在客户的注意并促使他们采取行动。好的广告文案应该简洁明了、有吸引力、能够突出产品或服务的特点和优势，并能够引导客户采取购买或使用的行动。我来告诉你广告主题，你来帮我写广告文案\",\n" +
                "            \"topicResponse\": \"请告诉我你的广告主题：\",\n" +
                "            \"sortNum\": 7,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 18,\n" +
                "            \"topicTitle\": \"品牌slogon\",\n" +
                "            \"topicDescription\": \"Slogan对消费者的意义在于其所传递的公司的产品理念，它所强调的是一家公司和它的产品最为突出的特点。告诉你品牌，你来帮我列三个slogan供我选择\",\n" +
                "            \"topicResponse\": \"告诉我品牌，我来帮你想一个slogon\",\n" +
                "            \"sortNum\": 8,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 11,\n" +
                "            \"topicTitle\": \"抖音文案\",\n" +
                "            \"topicDescription\": \"抖音文案是指在抖音平台上发布的文字内容，通常用于配合视频或图片展示，吸引用户的注意力和互动。好的抖音文案应该简洁、有趣、有吸引力，能够引起用户的共鸣和情感共鸣，从而增加用户的关注和互动。我给你一个主题，你来绑我写一段文案\",\n" +
                "            \"topicResponse\": \"请在下方聊天框输入您的主题：\",\n" +
                "            \"sortNum\": 9,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 12,\n" +
                "            \"topicTitle\": \"视频脚本\",\n" +
                "            \"topicDescription\": \"视频脚本是指为视频制作而编写的文字稿，包括视频的场景、对话、音效等元素的描述和安排。视频脚本通常由导演或编剧编写，用于指导演员、摄影师、音效师等制作人员的工作。视频脚本的目的是确保视频制作过程中的各个环节都能够顺利进行，最终呈现出高质量的视频作品。接下来我给你主题，你来帮我写一段视频脚本\",\n" +
                "            \"topicResponse\": \"请在下方聊天框输入您的主题：\",\n" +
                "            \"sortNum\": 10,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 13,\n" +
                "            \"topicTitle\": \"美食步骤\",\n" +
                "            \"topicDescription\": \"美食步骤通常包括以下几个方面：食材准备：选择新鲜、优质的食材，进行清洗、切割、调味等处理。烹饪方式：根据食材的特点和口感需求，选择合适的烹饪方式，如煮、炒、烤、蒸等。烹饪时间：根据食材的种类和烹饪方式，掌握合适的烹饪时间，以保证食材的口感和营养。调味品：根据个人口味和菜品特点，添加适量的调味品，如盐、糖、酱油、醋、料酒、姜蒜等。摆盘装饰：将烹制好的菜品摆放在盘子中，根据个人喜好进行装饰，如加入一些蔬菜、水果等，提高菜品的美观度和食欲\",\n" +
                "            \"topicResponse\": \"请问你想做什么菜？\",\n" +
                "            \"sortNum\": 11,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 14,\n" +
                "            \"topicTitle\": \"运营文案\",\n" +
                "            \"topicDescription\": \"运营文案是指在运营过程中所需要撰写的文本内容，旨在吸引用户、提高用户参与度、促进销售等目的。它通常包括社交媒体、电子邮件、短信、广告等多种形式，需要注意文案的语言表达、情感营销、信息传递等方面。\",\n" +
                "            \"topicResponse\": \"请告诉我您的主题：\",\n" +
                "            \"sortNum\": 12,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 15,\n" +
                "            \"topicTitle\": \"诗歌撰写\",\n" +
                "            \"topicDescription\": \"写诗需要以下几个步骤：找到灵感：可以从自己的经历、感受、观察、想象等方面寻找灵感。确定诗歌的主题和形式：诗歌的主题可以是爱情、自然、社会等，形式可以是自由诗、韵律诗等。写草稿：先写下自己的想法和感受，可以不用考虑韵律和格律。修订：对草稿进行修改和润色，注意语言的准确性和表达的清晰度。调整韵律和格律：如果写的是韵律诗或格律诗，需要根据规则进行调整。最后校对：检查拼写、标点和语法错误，确保诗歌的完整性和准确性。\",\n" +
                "            \"topicResponse\": \"请在下方聊天框输入诗歌主题：\",\n" +
                "            \"sortNum\": 13,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 16,\n" +
                "            \"topicTitle\": \"脱口秀\",\n" +
                "            \"topicDescription\": \"我想让你扮演一个脱口秀喜剧演员。我将为您提供一些与时事相关的话题，您将运用您的智慧、创造力和观察能力，根据这些话题创建一个例程。您还应该确保将个人轶事或经历融入日常活动中，以使其对观众更具相关性和吸引力。\",\n" +
                "            \"topicResponse\": \"你来帮我随便起一个主题吧：\",\n" +
                "            \"sortNum\": 14,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 17,\n" +
                "            \"topicTitle\": \"地图线路\",\n" +
                "            \"topicDescription\": \"路线规划，规划3种起点到终点方案\",\n" +
                "            \"topicResponse\": \"给我起点和终点，帮你规划线路\",\n" +
                "            \"sortNum\": 15,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }, {\n" +
                "            \"id\": 10,\n" +
                "            \"topicTitle\": \"生辰八字起名\",\n" +
                "            \"topicDescription\": \"生辰八字起名是一种中华文化传统，根据一个人的出生年、月、日、时的八个字来起名。根据八字的五行属性和吉凶祥煞等因素，选择合适的字来组成名字，我告诉你姓氏以及出生时间，你来帮我起一个二到三个字的名字\",\n" +
                "            \"topicResponse\": \"请告诉我姓氏以及出生时间：\",\n" +
                "            \"sortNum\": 100,\n" +
                "            \"valid\": 1,\n" +
                "            \"createdAt\": null,\n" +
                "            \"updatedAt\": null\n" +
                "        }]";
        List<TopicsEntity> topicsEntities = JSON.parseArray(txt, TopicsEntity.class);

        topicsService.saveBatch(topicsEntities);
    }


}
